function a(arg:string):string{
    return arg;
}

console.log(a("aaa"));

function b(arg:boolean):boolean{
    return arg;
}

console.log(b(true));

// 上面两个函数做的事情是一样，只是类型不一样。使用泛型，可以自定义类型来解决这个问题

function dump<T>(arg:T):T{
    return arg;
}

let dd1 = dump<string>("hello");
let dd2 = dump<boolean>(true);
console.log(dd1);
console.log(dd2);

// 基本的数据类型，不传类型它也可以自己推断
let dd3 = dump("哈哈");
let dd4 = dump(false);
console.log(dd3);
console.log(dd4);